Linux 操作系统允许用户为所有文件和目录分配精细的权限。通常,使用 chmod 命令向单个用户帐户或用户组授予读、写和/或执行权限就足够了。但也可以通过配置访问控制列表来为每个用户设置精细的权限。
访问控制列表允许我们向特定用户授予文件访问权限。这与 chmod 的工作方式不同,chmod 只能将权限分配给文件所有者、用户组或既不是所有者也不属于该组的所有其他用户。虽然 chmod 通常是在 Linux 上分配文件权限的首选方法,但事实证明,在具有许多不同用户的系统上配置访问控制列表是一种更可行、更简单的解决方案。
在本教程中,您将了解如何使用 chmod 和 setfacl Linux 命令向特定用户分配文件权限。我们将说明这两种方法之间的区别,这将帮助您决定最适合在您自己的文件系统上使用哪一种。许多管理员选择混合使用常规文件权限和访问控制列表,以确保文件安全,并且仅授予用户完成文件查看、编辑或执行任务所需的最低访问权限。下面我们就来看看怎么做吧。
在本教程中您将学习:
如何使用 chmod 为用户配置文件权限如何使用 chown 命令获取文件的所有权如何使用setfacl为用户配置文件权限如何使用getfacl命令查看访问控制列表信息如何使用 ls 和 stat 命令获取文件权限设置如何查看文件的当前权限让我们首先查看给定文件当前配置的权限。然后,我们可以继续编辑权限和访问控制列表以授予我们所需的预期权限。
查看文件甚至整个文件目录权限的最简单方法之一是使用 ls 命令和 -l 选项。只需指定您要查看其权限的文件的路径,或所有文件所在的目录。
$ ls -l example.txt-rw-rw-r-- 1 linuxconfig linuxconfig 0 Oct 12 12:15 example.txt上面的输出显示了权限 -rw-rw-r-- 并指示该文件的所有者和组是 linuxconfig。此用户和组具有rw-权限,即读取和写入权限,但没有执行权限。同时,所有其他用户(既不是所有者也不是组中的用户)仅具有 r-- 或 read 权限。
stat 命令是查看文件权限的另一种方法。这对于查看绝对模式和符号模式下的权限很有用,这可以帮助某些用户更好地理解文件的权限。
$ stat example.txt File: example.txt Size: 0 Blocks: 0 IO Block: 4096regular empty fileDevice: 803h/2051dInode: 921746 Links: 1Access: (0664/-rw-rw-r--) Uid: ( 1000/linuxconfig)Gid: ( 1000/linuxconfig)就像 ls 的输出一样,我们会看到文件的所有者、组和权限。
除了基本的文件权限之外,Linux 还具有访问控制列表的功能。这些工作独立于上面显示的文件权限。大多数文件通常只配置文件权限,而不配置访问控制列表设置。您可以通过检查 ls -l 的输出来确定文件是否配置了访问控制列表:
$ ls -l example.txt -rw-rwxr--+ 1 linuxconfig linuxconfig 0 Oct 10 12:24 example.txt请注意列出的权限中的 + 符号:-rw-rwxr--+。加号表示除了传统的文件权限之外,还对文件应用了访问控制列表。
现在我们知道 example.txt 已应用访问控制列表设置,让我们使用 getfacl 命令查看这些权限。
$ getfacl example.txtuser:linuxconfig:rwx我们在上面的代码片段中包含了最相关的输出。这一行表明我们的用户 linuxconfig 拥有该文件的读、写和执行权限。
请注意,在上面的屏幕截图中,使用 ls - 查看普通文件权限时,文件 example.txt 的所有者 linuxconfig 并未显示为具有执行权限。 l 命令。但是,在使用 getfacl 命令查看访问控制列表后,我们了解到用户 linuxconfig 已明确授予该文件的完全权限(读、写和执行)。如果这些设置是在 setfacl 命令之前设置的,那么这些设置将覆盖常规文件权限给出或限制的设置。
使用 chmod 和 setfacl 分配文件权限现在我们知道如何查看文件的文件权限和访问控制列表,让我们看看如何修改文件权限和访问控制列表以便向特定用户授予权限。
注意在大多数情况下,结合使用 chown 和 chmod 将产生授予文件权限所需的结果一个用户或一组用户。使用 setfacl 的访问控制列表仅需要用基